<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>
   输入类 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档
  </title>
  <link rel="shortcut icon" href="/user_guide/../images/design/favicon.ico" type="image/x-icon" />
  <link rel="stylesheet" type="text/css" media="all" href="/user_guide/userguide.css" />
  <link rel="search" href="/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索" />
  <link rel="canonical" href="/user_guide/libraries/input.html" />
  <script type="text/javascript" src="/user_guide/nav/nav.js">
  </script>
  <script type="text/javascript" src="/user_guide/nav/prototype.lite.js">
  </script>
  <script type="text/javascript" src="/user_guide/nav/moo.fx.js">
  </script>
  <script type="text/javascript" src="/user_guide/nav/user_guide_menu.js">
  </script>
  <meta name="robots" content="all" />
  <meta name="author" content="ExpressionEngine Dev Team" />
  <meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
 </head>
 <body>
  <!-- START NAVIGATION -->
  <div id="nav">
   <div id="nav_inner">
    <script type="text/javascript">
     create_menu('/user_guide/');
    </script>
   </div>
  </div>
  <script type="text/javascript">
   _setNavigation();
  </script>
  <div id="nav2">
   <a name="top">
   </a>
   <a href="javascript:void(0);" onclick="myHeight.toggle();">
    <img src="/user_guide/images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" />
   </a>
  </div>
  <div id="masthead">
   <table cellpadding="0" cellspacing="0" border="0" style="width:100%">
    <tr>
     <td width="350">
      <h1>
       CodeIgniter 用户指南 版本 2.0.0
      </h1>
     </td>
     
     <td id="breadcrumb_right">
      <a href="/user_guide/toc.html">
       目录页
      </a>
     </td>
    </tr>
   </table>
  </div>
  <!-- END NAVIGATION -->
  <!-- START BREADCRUMB -->
  <table cellpadding="0" cellspacing="0" border="0" style="width:100%">
   <tr>
    <td id="breadcrumb">
     <a href="/" target="_blank">
      CodeIgniter 中国首页
     </a>
     &nbsp;&#8250;&nbsp;
     <a href="/user_guide/toc.html">用户指南目录</a>
     &nbsp;&#8250;&nbsp;输入类
    </td>
    <td id="searchbox">
     <form method="get" action="http://www.google.com/search" target="google_window">
      <input type="hidden" name="client" value="pub-0176846097796333" />
      <input type="hidden" name="forid" value="1" />
      <input type="hidden" name="ie" value="UTF-8" />
      <input type="hidden" name="oe" value="UTF-8" />
      <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
      搜索用户指南&nbsp;
      <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
      &nbsp;
      <input type="submit" class="submit" name="sa" value="Go" />
     </form>
    </td>
   </tr>
  </table>
  <!-- END BREADCRUMB -->
  <div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
   <a href="http://codeigniter.com/user_guide/libraries/input.html" target="_blank">
    查看原文
   </a>
  </div>
  <!--<br clear="all"  />-->
  <!-- START CONTENT -->
  <div id="content">
   <h1>
    输入类
   </h1>
   <p>
    输入类有两个目的：
   </p>
   <ol>
    <li>
     为了安全，预处理输入数据。
    </li>
    <li>
     提供helper的一些方法，取得输入数据，并预处理输入数据。
    </li>
   </ol>
   <p class="important">
    <strong>
     说明:
    </strong>
    系统自动加载此类，不用手动加载。
   </p>
   <h2>
    安全过滤（Security Filtering）
   </h2>
   <p>
    当触发一个
    <a href="../general/controllers.html">
     控制器
    </a>
    的时候，安全过滤（Security Filtering）功能自动启动。做以下事情：
   </p>
   <ul>
    <li>
     摧毁全局GET数组。CodeIgniter不用GET数组，就没有必要允许它。
    </li>
    <li>
     当 register_globals 被设置为 on 的时候，销毁所有的全局变量。
    </li>
    <li>
     过滤 POST/COOKIE 数组键，只允许字母-数字(以及一些其它的)字符。
    </li>
    <li>
     可以过滤跨站脚本攻击 (Cross-site Scripting Hacks)  此功能可全局打开（enabled globally），或者按要求打开。
    </li>
    <li>
     换行符统一换为 \n
    </li>
   </ul>
   <h2>
    跨站脚本（XSS）过滤
   </h2>
   <p>
    输入类有能力阻止跨站脚本攻击。如果你想让过滤器遇到 POST 或者 COOKIE 数据时自动运行，你可以通过打开你的
    <kbd>
     application/config/config.php
    </kbd>
    文件进行如下设置实现:
   </p>
   <code>
    $config['global_xss_filtering'] = TRUE;
   </code>
   <p>
    请参考
    <a href="security.html">
     安全类
    </a>
    文档以获得更多信息在你的应用中使用跨站脚本过滤。
   </p>
   <h2>
    使用 POST, COOKIE, 或 SERVER 数据
   </h2>
   <p>
    CodeIgniter 有3个 helper方法可以让用户取得POST, COOKIE 或 SERVER 的内容。用这些方法比直接使用php方法($_POST['something'])的好处是不用先检查此项目是不是存在。 直接使用php方法，必须先做如下检验：
   </p>
   <code>
    if ( ! isset($_POST['something']))
    <br />
    &#123;
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;$something = FALSE;
    <br />
    &#125;
    <br />
    else
    <br />
    &#123;
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;$something = $_POST['something'];
    <br />
    &#125;
   </code>
   <p>
    用CodeIgniter内建的方法，你可以这样：
   </p>
   <code>
    $something = $this-&gt;input-&gt;post('something');
   </code>
   <p>
    这3个方法是：
   </p>
   <ul>
    <li>
     $this-&gt;input-&gt;post()
    </li>
    <li>
     $this-&gt;input-&gt;cookie()
    </li>
    <li>
     $this-&gt;input-&gt;server()
    </li>
   </ul>
   <h2>
    $this-&gt;input-&gt;post()
   </h2>
   <p>
    第一个参数是所要取得的post中的数据：
   </p>
   <code>
    $this-&gt;input-&gt;post('some_data');
   </code>
   <p>
    如果数据不存在，方法将返回 FALSE (布尔值)。
   </p>
   <p>
    第二个参数是可选的，如果想让取得的数据经过跨站脚本过滤（XSS Filtering），把第二个参数设为TRUE。
   </p>
   <code>
    $this-&gt;input-&gt;post('some_data', TRUE);
   </code>
   <h2>
    $this-&gt;input-&gt;get()
   </h2>
   <p>
    此方法类似post方法，用来取得get数据：
   </p>
   <code>
    $this-&gt;input-&gt;get('some_data', TRUE);
   </code>
   <h2>
    $this-&gt;input-&gt;get_post()
   </h2>
   <p>
    这个方法将会搜索POST和GET方式的数据流，首先以POST方式搜索，然后以GET方式搜索:
   </p>
   <code>
    $this-&gt;input-&gt;get_post('some_data', TRUE);
   </code>
   <h2>
    $this-&gt;input-&gt;cookie()
   </h2>
   <p>
    此方法类似post方法，用来取得cookie数据：
   </p>
   <code>
    $this-&gt;input-&gt;cookie('some_data', TRUE);
   </code>
   <h2>
    $this-&gt;input-&gt;server()
   </h2>
   <p>
    此方法类似上面两个方法，用来取得server数据：
   </p>
   <code>
    $this-&gt;input-&gt;server('some_data');
   </code>
   <h2>
    $this-&gt;input-&gt;set_cookie()
   </h2>
   <p>
    设置一个 Cookie 的值。这个函数接收两种形式的参数：数组形式和参数形式：
   </p>
   <h4>
    数组形式
   </h4>
   <p>
    用这种形式的话，第一个参数传递的是一个关联数组：
   </p>
   <code>
    $cookie = array(
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'name'&nbsp;&nbsp;&nbsp;=> 'The Cookie Name',
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'value'&nbsp;&nbsp;=> 'The Value',
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'expire' => '86500',
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'domain' => '.some-domain.com',
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'path'&nbsp;&nbsp;&nbsp;=> '/',
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'prefix' => 'myprefix_',
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);
    <br />
    <br />
    $this-&gt;input-&gt;set_cookie($cookie);
   </code>
   <p>
    <strong>
     说明：
    </strong>
   </p>
   <p>
    只有 name 和 value 是必须的。可以通过将 expire 设置成空来实现删除 Cookie 的操作。
   </p>
   <p>
    Cookie 的过期时间是以
    <strong>
     秒
    </strong>
    为单位来设置的，他是通过将 Cookie 的存续的时间值加上当前系统时间来得到的。切记，expire 的值仅仅设置为Cookie 需要存续的时间长短，请不要将当前的系统时间加上存续时间后再赋给变量。如果将 expire 设置成零，那么 Cookie 仅在浏览器关闭的时候失效。
   </p>
   <p>
    For site-wide cookies regardless of how your site is requested, add your URL to the
    <strong>
     domain
    </strong>
    starting with a period, like this:  .your-domain.com
   </p>
   <p>
    The path is usually not needed since the function sets a root path.
   </p>
   <p>
    The prefix is only needed if you need to avoid name collisions with other identically named cookies for your server.
   </p>
   <h4>
    参数形式
   </h4>
   <p>
    If you prefer, you can set the cookie by passing data using individual parameters:
   </p>
   <code>
    $this-&gt;input-&gt;set_cookie($name, $value, $expire, $domain, $path, $prefix);
   </code>
   <h2>
    $this-&gt;input-&gt;ip_address()
   </h2>
   <p>
    返回当前用户的IP。如果IP地址无效，返回0.0.0.0的IP：
   </p>
   <code>
    echo $this-&gt;input-&gt;ip_address();
   </code>
   <h2>
    $this-&gt;input-&gt;valid_ip(
    <var>
     $ip
    </var>
    )
   </h2>
   <p>
    测试输入的IP地址是不是有效，返回布尔值TRUE或者FALSE。  注意：$this-&gt;input-&gt;ip_address()自动测试输入的IP地址本身格式是不是有效。
   </p>
   <code>
    if ( ! $this-&gt;input-&gt;valid_ip($ip))
    <br />
    &#123;
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp; echo 'Not Valid';
    <br />
    &#125;
    <br />
    else
    <br />
    &#123;
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp; echo 'Valid';
    <br />
    &#125;
   </code>
   <h2>
    $this-&gt;input-&gt;user_agent()
   </h2>
   <p>
    返回当前用户正在使用的浏览器的user agent信息。 如果不能得到数据，返回FALSE。
   </p>
   <code>
    echo $this-&gt;input-&gt;user_agent();
   </code>
   <h2>
    $this-&gt;input-&gt;request_headers()
   </h2>
   <p>
    在不支持
    <a href="http://php.net/apache_request_headers">
     apache_request_headers()
    </a>
    的非Apache环境非常有用。返回请求头（header）数组。
   </p>
   <code>
    $headers = $this-&gt;input-&gt;request_headers();
   </code>
   <h2>
    $this-&gt;input-&gt;get_request_header();
   </h2>
   <p>
    返回请求头（request header）数组中某一个元素的值
   </p>
   <code>
    $this-&gt;input-&gt;get_request_header('some-header', TRUE);
   </code>
   <h2>
    $this-&gt;input-&gt;is_ajax_request()
   </h2>
   <p>
    检查服务器头
    <var>
     HTTP_X_REQUESTED_WITH
    </var>
    是否被设置，并返回布尔值。
   </p>
   <code>
    $this-&gt;input-&gt;is_ajax_request()
   </code>
   <p>
    &nbsp;
   </p>
   <div id="Contributors">
    翻译贡献者:
architectcom, Hex, hk_yuhe, IT不倒翁, soyota, sunjiaxi, xjflyttp, yinzhili, yzheng624
   </div>
   <div id="DocDate">
    最后修改: 2011-09-14 16:26:10
   </div>
  </div>
  <!-- END CONTENT -->
  <div id="footer">
   <p>
    上一个主题:&nbsp;&nbsp;
    <a href="/user_guide/libraries/image_lib.html">
     图像处理类
    </a>
    &nbsp;&nbsp;&middot;&nbsp;&nbsp;
    <a href="#top">
     页首
    </a>
    &nbsp;&middot;&nbsp;&nbsp;
    <a href="/user_guide/toc.html">用户指南目录</a>
    &nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;
    <a href="/user_guide/libraries/loader.html">
     装载器类
    </a>
   </p>
   <p>
    <a href="http://codeigniter.com">
     CodeIgniter
    </a>
    &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2011 &nbsp;&middot;&nbsp;
    <a href="http://ellislab.com/">
     Ellislab, Inc.
    </a>
   </p>
   <p>
    中文化:
    <a href="">
     CodeIgniter 中国
    </a>
    &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.20 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼
   </p>
  </div>
  
  <div style="display:none">
   
   <noscript>
    <a href="http://www.51.la/?3289908" target="_blank">
     <img alt="我要啦免费统计" src="http://img.users.51.la/3289908.asp" style="border:none" />
    </a>
   </noscript>
  </div>
 </body>
</html>